﻿/********************************************************************************
** @ Date:2025/07/10
** @ Author: Gaojia
** @ Description: 工具栏管理类
** @ Version:1.0.0
** @ Fun:
********************************************************************************/
#ifndef UToolBarManager_H
#define UToolBarManager_H
#include <qobject.h>
#include <QToolBar>
#include <QAction>
#include <QMap>
#include <QWidget>
#include <QString>
#include <functional>
#include <QMenuBar>
class UToolBarManager :
	public QObject
{
	Q_OBJECT
public:
	enum PageType {
		Common,  //公共按钮
		Device,  //设备按钮
		Scene,   //场景按钮 
		Carouse //轮播按钮
	};
	explicit UToolBarManager(QToolBar* toolBar,QMenuBar *memuBar, QObject* parent = nullptr);
	// 添加公共按钮或某类界面的按钮
	QAction* addAction(PageType page, const QString& text, const QIcon& icon = QIcon());
	QAction* addSeparator(PageType page);
	void setToolBtn(PageType page, int nType);    //设置工具和菜单栏 按钮启用状态
	// 切换当前页面类型，更新按钮显示
private:
	QToolBar* m_toolBar;
	QMenuBar *m_memuBar;
	QMap<PageType, QList<QAction*>> m_actionMap;  // 各页面的按钮
	QMap<PageType, QList<QAction*>> m_menuMapEx;  // 各页面的按钮
	QMap<PageType, QString>m_mapMenutext;
	int m_commonCount;                        // 公共按钮数量
	void switchTo(PageType page);
	void clearNonCommonButtons();
	void disableMemu(const QString& title, bool enabled);  //禁用和启用菜单项
	void setDevice(int nType);    //0全部启用  1 禁用 删除  2全部禁用
	void setScene(int nType);    //0全部启用  1 禁用 删除  2全部禁用
	void setCarouse(int nType);    //0更节点  1 子节点或者场景  2全部禁用
	PageType m_enPage;
	int m_nType;
};
#endif
